package servlets;

import java.io.IOException;
import java.util.List;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import coneccion.DocumentoIdentidadConsultas;
import coneccion.EstudiantesConsultas;

import objetos.DocumentoIdentidad;
import objetos.Estudiante;
import utils.Constantes;

/**
 * 
 */
public class EstudiantesGuardar extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public EstudiantesGuardar() {
        super();

    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		processRequest(request, response);
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		processRequest(request, response);
	}
	
	protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
		
		request.setCharacterEncoding( "UTF-8");
		String accion = request.getParameter("accion");
		Boolean error = Boolean.TRUE;
		String id = request.getParameter("id");
		String nombres = request.getParameter("nombres");
		String apellidos = request.getParameter("apellidos");
		String legajo = request.getParameter("legajo");
		String tipoDocumento = request.getParameter("tipoDocumento");
		String numeroDocumento = request.getParameter("numeroDocumento");
		
		Estudiante estudiante = new Estudiante();
		DocumentoIdentidad documentoIdentidad = null;
		Integer tipoDocumentoInt = null;
		Integer idInt = null;
		List<DocumentoIdentidad> listaDocumentosIdentidad= null;
		
		if(accion!=null && accion.length()>0){
			EstudiantesConsultas estudiantesConsultas = new EstudiantesConsultas();
			try{
				if(id!=null && id.length()>0){
					idInt = Integer.valueOf(id);
				}
			}catch (Exception e) {
				idInt = null;
			}
			estudiante.setId(idInt);
			
			if((nombres!=null && nombres.length()>0)
					&& (apellidos!=null && apellidos.length()>0)
					&& (legajo!=null && legajo.length()>0) 
					&& (tipoDocumento!=null && tipoDocumento.length()>0) 
					&& (numeroDocumento!=null && numeroDocumento.length()>0)){
				
				estudiante.setNombres(nombres);
				estudiante.setApellidos(apellidos);
				estudiante.setLegajo(legajo);
				estudiante.setNumeroDocumento(numeroDocumento);
				
				try{
					if(tipoDocumento!=null && tipoDocumento.length()>0){
						tipoDocumentoInt = Integer.valueOf(tipoDocumento);
					}
				}catch (Exception e) {
					tipoDocumentoInt = null;
				}
				
				if(tipoDocumentoInt!=null && tipoDocumentoInt.intValue()>0){
					documentoIdentidad = new DocumentoIdentidad();
					documentoIdentidad.setId(tipoDocumentoInt);				
				}
				
				
				estudiante.setDocumentoIdentidad(documentoIdentidad);
				if(Constantes.FORM_AGREGAR.equals(accion) && idInt == null){
			 		error = !estudiantesConsultas.agregarEstudiante(estudiante);
			 	}else if(Constantes.FORM_ACTUALIZAR.equals(accion) && idInt != null){
			 		error = !estudiantesConsultas.actualizarEstudiante(estudiante);
			 	}
			}
			
		 	 if(Constantes.FORM_ELIMINAR.equals(accion) && idInt!=null){
		 		error = !estudiantesConsultas.eliminarEstudiante(estudiante);
		 	}
		}
		
		DocumentoIdentidadConsultas documentoIdentidadConsultas = new DocumentoIdentidadConsultas();
		listaDocumentosIdentidad = documentoIdentidadConsultas.getTodosDocumentoIdentidad();
		
		request.setAttribute("error", error);
		request.setAttribute("listaDocumentosIdentidad", listaDocumentosIdentidad);
		request.setAttribute("estudiante", estudiante);
		RequestDispatcher disp = null;
		if(accion!=null && accion.equals(Constantes.FORM_ELIMINAR)){
			disp = request.getRequestDispatcher("EstudiantesList");
		}else{
			disp = request.getRequestDispatcher("pages/admin/estudiantesForm.jsp");
		}
		
		disp.forward(request, response);
	}

}
